#include "XString.h"
#include <string.h>
#include <stdlib.h>

XString::XString(void) {
	m_str = 0;
	m_len = 0;
}

void XString::init(const char* str, const int len) {
	m_len = len > 0 ? len : strlen(str);
	m_str = (char *) malloc(m_len + 1);
	memcpy(m_str, str, m_len);
	m_str[m_len] = 0;
}

XString::XString(const char* str) {
	init(str, 0);
}

XString::~XString(void) {
	if (m_str) {
		free(m_str);
		m_str = 0;
	}
	m_len = 0;
}

void XString::Append(const char* buf, const int len) {
	if (m_str == 0) {
		init(buf, len);
	} else {
		int oldLen = m_len;
		m_len += len + 1;
		m_str = (char *)realloc(m_str, m_len);
		memcpy(m_str+oldLen, buf, len);
		m_str[m_len] = 0;
	}
}
